// 用户信息管理工具
class UserManager {
  constructor() {
    this.userInfo = null
    this.isLogin = false
    this.init()
  }
  
  // 初始化用户信息
  init() {
    try {
      const userInfo = uni.getStorageSync('userInfo')
      const isLogin = uni.getStorageSync('isLogin')
      
      console.log('初始化用户信息:', { userInfo, isLogin })
      
      if (userInfo && isLogin) {
        this.userInfo = userInfo
        this.isLogin = true
        console.log('✅ 用户已登录:', this.userInfo)
      } else {
        this.userInfo = null
        this.isLogin = false
        console.log('❌ 用户未登录')
      }
    } catch (error) {
      console.error('初始化用户信息失败:', error)
      this.userInfo = null
      this.isLogin = false
    }
  }
  
  // 获取用户信息
  getUserInfo() {
    return this.userInfo
  }
  
  // 检查登录状态
  checkLogin() {
    // 双重检查：内存状态 + 存储状态
    try {
      const storedLogin = uni.getStorageSync('isLogin')
      const storedUserInfo = uni.getStorageSync('userInfo')
      
      // 如果存储中有登录信息，但内存中没有，则同步内存状态
      if (storedLogin && storedUserInfo && !this.isLogin) {
        console.log('🔄 同步登录状态到内存')
        this.isLogin = true
        this.userInfo = storedUserInfo
      }
      
      const isLoggedIn = this.isLogin && storedLogin && storedUserInfo
      
      console.log('检查登录状态:', {
        memoryLogin: this.isLogin,
        storedLogin: storedLogin,
        storedUserInfo: !!storedUserInfo,
        finalResult: isLoggedIn
      })
      
      return isLoggedIn
    } catch (error) {
      console.error('检查登录状态失败:', error)
      return false
    }
  }
  
  // 登录
  login(userInfo) {
    return new Promise((resolve, reject) => {
      try {
        console.log('用户登录:', userInfo)
        
        uni.setStorageSync('userInfo', userInfo)
        uni.setStorageSync('isLogin', true)
        
        this.userInfo = userInfo
        this.isLogin = true
        
        console.log('登录状态已更新:', {
          userInfo: this.userInfo,
          isLogin: this.isLogin
        })
        
        resolve(userInfo)
      } catch (error) {
        console.error('登录失败:', error)
        reject(error)
      }
    })
  }
  
  // 退出登录
  logout() {
    return new Promise((resolve, reject) => {
      try {
        uni.removeStorageSync('userInfo')
        uni.removeStorageSync('isLogin')
        uni.removeStorageSync('token')
        
        this.userInfo = null
        this.isLogin = false
        
        resolve()
      } catch (error) {
        reject(error)
      }
    })
  }
  
  // 更新用户信息
  updateUserInfo(newInfo) {
    return new Promise((resolve, reject) => {
      try {
        // 检查是否已登录
        if (!this.checkLogin()) {
          reject(new Error('用户未登录，无法修改资料'))
          return
        }
        
        const updatedInfo = { ...this.userInfo, ...newInfo }
        uni.setStorageSync('userInfo', updatedInfo)
        this.userInfo = updatedInfo
        resolve(updatedInfo)
      } catch (error) {
        reject(error)
      }
    })
  }
  
  // 获取用户昵称
  getNickname() {
    return this.userInfo?.nickname || '游客'
  }
  
  // 获取用户头像
  getAvatar() {
    return this.userInfo?.avatar || '/static/logo.png'
  }
  
  // 获取登录类型
  getLoginType() {
    return this.userInfo?.loginType || 'guest'
  }
  
  // 获取用户ID
  getUserId() {
    return this.userInfo?.userId || null
  }
  
  // 获取用户token
  getToken() {
    try {
      return uni.getStorageSync('token') || null
    } catch (error) {
      console.error('获取token失败:', error)
      return null
    }
  }
  
  // 强制刷新用户状态
  refreshUserStatus() {
    console.log('🔄 强制刷新用户状态')
    this.init()
    return this.checkLogin()
  }
}

// 创建单例实例
const userManager = new UserManager()

export default userManager